package no.knowit.selectModel;

import java.util.ArrayList;
import java.util.List;

import no.knowit.entities.Oppdragsgiver;

import org.apache.tapestry5.OptionGroupModel;
import org.apache.tapestry5.OptionModel;
import org.apache.tapestry5.ValueEncoder;
import org.apache.tapestry5.annotations.Log;
import org.apache.tapestry5.internal.OptionModelImpl;
import org.apache.tapestry5.util.AbstractSelectModel;

public class OppdragsgiverSelectModel extends AbstractSelectModel implements
		ValueEncoder<Object> {
	private List<Oppdragsgiver> oppdragsgivere;

	public OppdragsgiverSelectModel(List<Oppdragsgiver> oppdragsgivere) {
		this.oppdragsgivere = oppdragsgivere;
	}

	@Log
	public String toClient(Object innkommendeOppdragsgiver) {
		Oppdragsgiver oppdragsgiver = (Oppdragsgiver) innkommendeOppdragsgiver;
		return oppdragsgiver.getId().toString();
	}

	public Object toValue(String input) {
		Long id = Long.parseLong(input);
		for (Oppdragsgiver oppdragsgiver : oppdragsgivere) {
			if (id.equals(oppdragsgiver.getId())) {
				return oppdragsgiver;
			}
		}
		return null;
	}

	public List<OptionGroupModel> getOptionGroups() {
		// TODO Auto-generated method stub
		return null;
	}

	public List<OptionModel> getOptions() {
		List<OptionModel> options = new ArrayList<OptionModel>();
		for (Oppdragsgiver oppdragsgiver : oppdragsgivere) {
			options.add(new OptionModelImpl(oppdragsgiver.getNavn(),
					oppdragsgiver));
		}
		return options;
	}

	public List<Oppdragsgiver> getOppdragsgivere() {
		return oppdragsgivere;
	}

	public void setOppdragsgivere(List<Oppdragsgiver> oppdragsgivere) {
		this.oppdragsgivere = oppdragsgivere;
	}

}
